import { isNumber } from "./check"

/**
 * 格式化数字函数
 * @param {number} amount - 输入的数字
 * @param {Object} options - 选项对象
 * @param {number} [options.decimalPlaces] - 小数位数，默认为2
 * @param {string} [options.thousandsSep] - 千位分隔符，默认为空
 * @param {boolean} [options.trimZero] - 是否去除后面多余的零，默认为true
 * @returns {string} 返回格式化后的金额字符串
 */
export function formatDigit(digit = 0, options = {}) {
  if (!isNumber(digit)) return digit
  digit = Number(digit)
  const { decimalPlaces = 2, thousandsSep = "", trimZero = true } = options

  let fixedDecimalString = digit.toFixed(decimalPlaces)

  let [integerPart, decimalPart] = fixedDecimalString.split(".")

  if (thousandsSep) {
    integerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, thousandsSep)
  }

  if (trimZero && decimalPart) {
    decimalPart = decimalPart.replace(/0+$/, "")
  }

  let formattedNumber = integerPart
  if (decimalPart) {
    formattedNumber += `.${decimalPart}`
  }

  return formattedNumber
}

/**
 * 根据数值大小，将数字格式化为带有单位的字符串（例如添加 "万" 或 "亿" 等）
 * @param {number} number - 要格式化的数字
 * @returns {string} - 格式化后的带单位字符串
 */
export function formatNumberWithUnit(number) {
  if (number < 10000) {
    return number.toString()
  } else if (number < 100000000) {
    return (number / 10000).toFixed(1) + "万"
  } else {
    return (number / 100000000).toFixed(1) + "亿"
  }
}
